﻿namespace Blaze.Framework
{
    using System;
    using XLua;

    /// <summary>
    /// Lua模块接口。
    /// </summary>
    public interface ILuaModule
    {
        /// <summary>
        /// 当模块即将进行重载时触发此事件。
        /// </summary>
        event Action Reloading;

        /// <summary>
        /// 执行指定的Lua脚本。
        /// </summary>
        /// <param name="script">脚本</param>
        object[] DoString(string script);

        /// <summary>
        /// 初始化模块。
        /// </summary>
        void Initialize();

        /// <summary>
        /// 重新载入Lua环境。
        /// </summary>
        void Reload();

        /// <summary>
        /// 加载指定路径的Lua脚本。
        /// </summary>
        /// <param name="path">脚本路径</param>
        LuaTable Require(string path);
    }
}